@tool
class_name 地图传送点 extends Area2D

enum 方向枚举 {左,右,上,下}

@onready var 场景传送点碰撞体: CollisionShape2D = $场景传送点碰撞体

@export_file("*.tscn") var 目标场景
@export var 检测区域名称 :String = '场景传送点'

@export_category('传送点设置')
@export_range(1,12,1,"or_greater") var 大小:int = 2:
	set(value):
		大小 = value
		更新检测区域()
		
@export var 方向:方向枚举 = 方向枚举.左:
	set(value):
		方向 = value
		更新检测区域()
@export var 开关:bool = false



# Called when the node enters the scene tree for the first time.
func _ready() -> void:
	更新检测区域()
	if Engine.is_editor_hint():
		return
	# monitoring = false
	body_entered.connect(玩家进入)
	
func 玩家进入(玩家节点:Node2D) -> void:
	全局地图脚本.加载新地图(目标场景,检测区域名称)
	pass
	
func 更新检测区域() -> void:
	var 区域向量 = Vector2(32,32)
	var 位置 = Vector2.ZERO
	match 方向:
		方向枚举.左:
			区域向量.y *= 大小
			位置.x -= 16
		方向枚举.右:
			区域向量.y *= 大小
			位置.x += 16
		方向枚举.上:
			区域向量.x *= 大小
			位置.y -= 16
		方向枚举.下:
			区域向量.x *= 大小
			位置.y += 16
	if 场景传送点碰撞体 == null:
		场景传送点碰撞体 = get_node("场景传送点碰撞体")
	if 场景传送点碰撞体:
		场景传送点碰撞体.shape.size = 区域向量
		场景传送点碰撞体.position = 位置
